package org.canaan.util;

import org.apache.commons.lang3.StringUtils;

import java.util.Vector;
import java.util.regex.Pattern;

/**
 * @author Canaan
 * @date 2017/8/20
 */
public class Tools {
    private final static Vector<Long> KEY_POOL = new Vector<>();

    /**
     判断是不是一个json串，只判断头尾，中间的格式没有做验证
     @param jsonStr
     @return true 是json格式，false不是json格式
     */
    public static boolean  isJson(String jsonStr){
        if(StringUtils.isBlank(jsonStr)){
            return  false;
        }
        jsonStr = StringUtils.trim(jsonStr);

        return Pattern.matches("^(\\{.*\\})|(\\[.*\\])$",jsonStr);
    }

    public static boolean isNotJson(String jsonStr) {
        return !isJson(jsonStr);
    }

    /**
     主键生成,如果 KEY_POOL变量一个集群缓存就可以实现集群
     @return
     */
    static public synchronized long generateKey() {
        if (KEY_POOL.size() > 25) {
            for (int i = 23; i > 3; i--) {
                KEY_POOL.remove(i);
            }
        }

        Long timeStamp = System.currentTimeMillis();
        while (KEY_POOL.contains(timeStamp)) {
            int i = 1000000;
            while (i > 0) {
                i--;
            }
            timeStamp = System.currentTimeMillis();
        }
        KEY_POOL.add(0, timeStamp);
        return timeStamp;
    }

}
